Many computer programming languages have a notion of type. The precise meaning of this notion differs from language to language, but in most cases, types are involved in at least two related aspects of the language:                Types describe the representation of values. For example, the type char might describe an 8-bit value, while double might describe a 64-bit value.        Types are used to resolve overloads of at least some functions. For example, + of two 32-bit integer values behaves differently from + of two 32-bit floating point values.        
In some programming languages, often called statically typed languages, types may play an additional role of providing certain correctness guarantees: the computer programming language processing system may reject certain programs as not type-correct. Other programming languages are said to be dynamically typed. A few languages offer both a statically and a dynamically typed aspect.